package com.itany.corejava.code06_面向对象;

/**
 * @author 石小俊
 * @date 2024年01月15日 15:04
 */
public class Test06_构造方法 {
    public static void main(String[] args) {
        User user = new User();
        user.username = "admin";
        user.password = "123456";
        user.show();
        System.out.println("***************************");
        User user2 = new User("alice", "111111");
        user2.show();
        System.out.println("***************************");
        User user3 = new User(1, "jack", "222222");
        user3.show();
    }
}

class User {
    int id;
    String username;
    String password;

    // 所有的类默认都有一个无参的构造方法
    public User() {
        System.out.println("这是无参构造方法");
    }

    // 如果在类中定义了有参构造方法,默认的无参构造方法将会失效
    // 构造方法也支持重载
    public User(String username, String password) {
        System.out.println("这是有参构造方法");
        this.username = username;
        this.password = password;
    }

    // 在有参构造方法中,一般情况下方法有几个参数,即表示对对象的几个属性进行赋值
    public User(int id, String username, String password) {
        // 调用构造方法,参数有几个,则表示调用对应参数的构造方法
        // this()必须处于方法的第一行,且只能调用一次
        this(username, password);
        this.id = id;
    }

    public User(int id) {
        this.id = id;
    }

    public User(String username) {
        this.username = username;
    }

    public void show() {
        System.out.println("id:" + id + ",username:" + username + ",password:" + password);
    }
}
